package clases;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collections;
import java.util.Vector;

public class Seccion {
	private Profesor profesor = new Profesor() ;
	private Vector<Estudiante> estudiantes;
	
	public Vector<Estudiante> getEstudiantes() {
		return estudiantes;
	}



	public void setEstudiantes(Vector<Estudiante> estudiantes) {
		this.estudiantes = estudiantes;
	}

	int numero;
	
	public Seccion() {
		// TODO Auto-generated constructor stub
		estudiantes = new Vector<Estudiante>();
	}
	
	
	
	public int getNumero() {
		return numero;
	}



	public void setNumero(int numero) {
		this.numero = numero;
	}



	public void AsignarProfesor(Profesor p){
		profesor = p;
		System.out.println("El(La) profesor(a) "+p.getNombre()+" "+p.getApellido()+" ha sido asignado a la seccion exitosamente");
	}
	
	public void InscribirEstudiante(Estudiante e){
		int i =0;
		Estudiante e1;
		while(i<estudiantes.size()){
			e1 = estudiantes.elementAt(i);
			if(e.getCedula().equals(e1.getCedula())){
				System.out.println("El(La) estudiante "+e.getNombre()+" "+e.getApellido()+" ya se encuantra inscrito en la seccion");
				return;
			}
			i++;
		}
		estudiantes.add(e);
		System.out.println("El(La) estudiante "+e.getNombre()+" "+e.getApellido()+" ha sido inscrito en la seccion exitosamente");
	}
	
	public void RetirarEstudiante(String cedula){
		int i =0;
		Estudiante e;
		while(i<estudiantes.size()){
			e = estudiantes.elementAt(i);
			if(e.getCedula().equals(cedula)){
				estudiantes.remove(i);
				return;
			}
			i++;
		}
		System.out.println("La cedula ingresada no pertenece a ningun estudiante ");
	}
	
	public boolean buscarCedula(String cedula){
		int i =0;
		Estudiante e;
		while(i<estudiantes.size()){
			e = estudiantes.elementAt(i);
			if(e.getCedula().equals(cedula)){
				return true;
			}
			i++;
		}
		return false;
		}
	
	public Estudiante BuscarEstCed(String cedula){
		int i =0;
		Estudiante e;
		while(i<estudiantes.size()){
			e = estudiantes.elementAt(i);
			if(e.getCedula().equals(cedula)){
				return e;
			}
			i++;
		}
		return null;
	}
	
	public void AplicarEvaluaciones(){
		int i =0;
		Estudiante e;
		while(i<estudiantes.size()){
			e = estudiantes.elementAt(i);
			e.presentarEvaluacion();
			i++;
		}
		profesor.evaluarEstudiante(estudiantes);
		System.out.println("");
		
	} 
	
    public Vector<Estudiante> ListarEstCed(){
    	OutputStream flujo= null;
    	String msg;
    	byte buf[];
    	
		Estudiante e;
    	try {
			flujo = new FileOutputStream("ListadoCedula.txt");
		} catch (FileNotFoundException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}
    	Estudiante e1,e2;
    	for (int i = 0; i < estudiantes.size() - 1; ++i)
    	       for (int j = i + 1; j < estudiantes.size(); ++j){
    	        	e1= estudiantes.elementAt(i);
    	        	e2= estudiantes.elementAt(j);
    	        	if((e1.getCedula().compareTo(e2.getCedula()))>0)
    	        		Collections.swap(estudiantes,i,j);
    	        }
    
    	msg = "Listado de Estudiantes Ordenados por Cedula \n";
    	buf=msg.getBytes();
    	try {
			flujo.write(buf);
		} catch (IOException e4) {
			// TODO Auto-generated catch block
			e4.printStackTrace();
		}
		System.out.println(msg);
		int i =0;
		while(i<estudiantes.size()){
			e = estudiantes.elementAt(i);
			//msg= "\r\n" + e.getCedula()+" "+e.getNombre()+" "+e.getApellido()+"\r\n";
			msg="Cedula: "+e.getCedula()+" "+"Nombre: "+e.getNombre()+" "+"Apellido: "+e.getApellido()+"\n";
			buf=msg.getBytes();
			System.out.println(msg);
			try {
				flujo.write(buf);
			} catch (IOException e3) {
				// TODO Auto-generated catch block
				e3.printStackTrace();
			}
			i++;
		}
		try {
			flujo.close();
		} catch (IOException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}    
		return estudiantes;
    }
    
    public Vector<Estudiante> ListarEstNotFin(){
    	OutputStream flujo= null;
    	String msg;
    	byte buf[];
    	
		Estudiante e;
    	try {
			flujo = new FileOutputStream("ListadoNota.txt");
		} catch (FileNotFoundException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}
    	Estudiante e1,e2;
    	for (int i = 0; i < estudiantes.size() - 1; ++i)
    	       for (int j = i + 1; j < estudiantes.size(); ++j){
    	        	e1= estudiantes.elementAt(i);
    	        	e2= estudiantes.elementAt(j);
    	        	if(e1.getnF()<e2.getnF())
    	        		Collections.swap(estudiantes,i,j);
    	        }
    	msg = "Listado de Estudiantes Ordenados por Nota Final \n";
    	buf=msg.getBytes();
    	try {
			flujo.write(buf);
		} catch (IOException e4) {
			// TODO Auto-generated catch block
			e4.printStackTrace();
		}
		System.out.println(msg);
		int i =0;
		while(i<estudiantes.size()){
			e = estudiantes.elementAt(i);
			msg="Cedula: "+e.getCedula()+" "+"Nombre: "+e.getNombre()+" "+"Apellido: "+e.getApellido()+" Nota Final: "+ e.getnF()+" \n";
			buf=msg.getBytes();
			System.out.println(msg);
			try {
				flujo.write(buf);
			} catch (IOException e3) {
				// TODO Auto-generated catch block
				e3.printStackTrace();
			}
			i++;
		}
		try {
			flujo.close();
		} catch (IOException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}
		return estudiantes;
    }
    
    public Vector<Estudiante> ListarEstApro(){
    	Vector<Estudiante>  estudiantesAprobados=new Vector<Estudiante>();
    	OutputStream flujo= null;
    	String msg;
    	byte buf[];    	
		Estudiante e;
    	try {
			flujo = new FileOutputStream("ListadoAprobados.txt");
		} catch (FileNotFoundException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}
    	msg = "Listado de Estudiantes Aprobados \n";
    	buf=msg.getBytes();
    	try {
			flujo.write(buf);
		} catch (IOException e4) {
			// TODO Auto-generated catch block
			e4.printStackTrace();
		}
		System.out.println(msg);
		int i =0;
		while(i<estudiantes.size()){
			e = estudiantes.elementAt(i);
			if(e.getEstado()=='A'){
				estudiantesAprobados.add(e);
				msg="Cedula: "+e.getCedula()+" "+"Nombre: "+e.getNombre()+" "+"Apellido: "+e.getApellido()+" Nota Final: "+ e.getnF()+" \n";
				buf=msg.getBytes();
				System.out.println(msg);
				try {
					flujo.write(buf);
				} catch (IOException e3) {
					// TODO Auto-generated catch block
					e3.printStackTrace();
				}
			}
			i++;
		}
		try {
			flujo.close();
		} catch (IOException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}
		return estudiantesAprobados;
    }
    
    public Vector<Estudiante> ListarEstApla(){
    	Vector<Estudiante>  estudiantesAplazados=new Vector<Estudiante>();
    	OutputStream flujo= null;
    	String msg;
    	byte buf[];    	
		Estudiante e;
    	try {
			flujo = new FileOutputStream("ListadoAplazados.txt");
		} catch (FileNotFoundException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}
    	msg = "Listado de Estudiantes Aplazados \n";
    	buf=msg.getBytes();
    	try {
			flujo.write(buf);
		} catch (IOException e4) {
			// TODO Auto-generated catch block
			e4.printStackTrace();
		}
		System.out.println(msg);
		int i =0;
		while(i<estudiantes.size()){
			e = estudiantes.elementAt(i);
			if(e.getEstado()=='R'){
				estudiantesAplazados.add(e);
				msg="Cedula: "+e.getCedula()+" "+"Nombre: "+e.getNombre()+" "+"Apellido: "+e.getApellido()+" Nota Final: "+ e.getnF()+" \n";
				buf=msg.getBytes();
				System.out.println(msg);
				try {
					flujo.write(buf);
				} catch (IOException e3) {
					// TODO Auto-generated catch block
					e3.printStackTrace();
				}
			}
			i++;
		}
		try {
			flujo.close();
		} catch (IOException e3) {
			// TODO Auto-generated catch block
			e3.printStackTrace();
		}
		return estudiantesAplazados;
    }
    
    public Profesor getProfesor() {
		return profesor;
	}



	public void setProfesor(Profesor profesor) {
		this.profesor = profesor;
	}



	public float MostraPromedio(){
    	float acum=0;
    	int i =0;
		while(i<estudiantes.size()){
			acum+=estudiantes.elementAt(i).getnF();
			i++;
		}
		return acum;
    }
}
